package entities;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.sql.rowset.serial.SerialBlob;
import javax.swing.ImageIcon;

public class Notifica{
	
	private String data_ora;
	private String via_comune;
	private ArrayList<Integer> infrazioni;
	private ArrayList<String> descrizioneInfrazioni;
	private double sanzione;
	private String verbaleNumber;
	private String targa;
	private SerialBlob foto;
	private double lat;
	private double longi;
	
	public Notifica() {}


	public Notifica (String a, String b, double san, String tar){
		data_ora = a;
		via_comune = b;
		sanzione = san;
		infrazioni = new ArrayList<Integer>();
		descrizioneInfrazioni= new ArrayList<String>();
		verbaleNumber = "";
		targa = tar;
		foto = null;
	}

	public Notifica (String a, String b, double san,String vNum,String tar){
		data_ora = a;
		via_comune = b;
		sanzione = san;
		infrazioni = new ArrayList<Integer>();
		descrizioneInfrazioni= new ArrayList<String>();
		verbaleNumber = vNum;
		targa = tar;
		foto = null;
	}
	

	public SerialBlob getFoto() {
		return foto;
	}

	public void setFoto(String pathImage) throws Exception{
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		String fileExt;
		int pos;
		//determino l'estensione del file
		pos = pathImage.lastIndexOf(".");
		if (pos >= 0)
		{
			fileExt = pathImage.substring(pos + 1);
		}
		else{
			//se non so determinare estensione imposto come default jpg 
			fileExt = "jpg";
		}
		ImageIcon objImageIcon = new ImageIcon(pathImage);
		//converto l'immagine
		BufferedImage objBI = new BufferedImage(objImageIcon.getIconWidth(), objImageIcon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2 = objBI.createGraphics();
		g2.drawImage(objImageIcon.getImage(), 0, 0, null);
		ImageIO.write(objBI, fileExt, baos);
		this.foto = new SerialBlob(baos.toByteArray());
	}
	
	
	public void setFoto(ByteArrayOutputStream baos) throws Exception{
		this.foto = new SerialBlob(baos.toByteArray());
	}

	

	public void addInfrazione(Integer i,String des){
		infrazioni.add(i);
		descrizioneInfrazioni.add(des);
	}

	public String getDataOra(){
		return data_ora;	
	}

	public String getViaComune(){
		return via_comune;
	}


	public Integer getInfrazione(int i){
		return infrazioni.get(i);
	}
	
	public String getDescrizioneInfrazione(int i){
		return descrizioneInfrazioni.get(i);
	}
	
	public int getInfrazioniSize(){
		return infrazioni.size();
	}
	
	public void setVia_comune(String via_comune) {
		this.via_comune = via_comune;
	}
	public double getSanzione() {
		return sanzione;
	}
	
	public void setSanzione(double sanzione) {
		this.sanzione = sanzione;
	}


	public String getVerbaleNumber() {
		return verbaleNumber;
	}
	
	public void setVerbaleNumber(String verbaleNumber) {
		this.verbaleNumber = verbaleNumber;
	}
	
	public ArrayList<Integer> getInfrazioni() {
		return infrazioni;
	}
	
	public void setInfrazioni(ArrayList<Integer> infrazioni) {
		this.infrazioni = infrazioni;
	}
	
	public ArrayList<String> getDescrizioneInfrazione() {
		return descrizioneInfrazioni;
	}
	
	public void setDescrizioneInfrazione(ArrayList<String> descrizioneInfrazione) {
		this.descrizioneInfrazioni = descrizioneInfrazione;
	}
	
	public String getTarga() {
		return targa;
	}
	
	public void setTarga(String targa) {
		this.targa = targa;
	}


	public double getLat() {
		return lat;
	}


	public void setLat(double lat) {
		this.lat = lat;
	}


	public double getLongi() {
		return longi;
	}


	public void setLongi(double longi) {
		this.longi = longi;
	}
	
	
}
